package frsf.cidisi.exercise.idemiatp.situationCalculus.actions;

import frsf.cidisi.exercise.idemiatp.situationCalculus.StateArquelogo;
import frsf.cidisi.exercise.idemiatp.situationCalculus.StateIsla;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusAction;
import frsf.cidisi.faia.state.AgentState;
import frsf.cidisi.faia.state.EnvironmentState;

public class IrCabe extends SituationCalculusAction {

    @Override
    public EnvironmentState execute(AgentState ast, EnvironmentState est) {
        
    	 StateIsla environmentState = (StateIsla) est;
         StateArquelogo agState = ((StateArquelogo) ast);

         String ciudadActual = agState.getPosicion();
         
         if((ciudadActual.equals("vinizaile"))&& 
         		!agState.getCiudadesVisitadas().contains("cabe")) {
             // Update the real world
     		
             environmentState.setPosicionArquelogo("cabe");

             agState.getCiudadesVisitadas().add("cabe");

             agState.setPosicion("cabe");
             
             return environmentState;
         }

         return null;
    }

    @Override
    public String toString() {
        return "IrCabe";
    }
}

